package com.waitingsnow.common.share.netEaseMicroblog.account
{
	import com.waitingsnow.common.share.bridia.net.BDHttpLoader;
	import com.waitingsnow.common.share.bridia.net.oauth.BDOAuthConnection;
	import com.waitingsnow.common.share.netEaseMicroblog.NEMicroblog;
	import com.waitingsnow.common.share.netEaseMicroblog.data.NEMObject;
	
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.net.URLRequest;
	import flash.utils.ByteArray;
	
	import flash.utils.ByteArray;
	
	/**
	 *  
	 * @author Tensharp
	 * 
	 * <p>包含了所有帐号相关的接口</p>
	 * 
	 */	
	
	public class NEMAccount extends NEMObject
	{
		protected var uploader:BDHttpLoader;
		
		/**
		 * 
		 * <p>创建一个新的NEMAccount</p> 
		 * 
		 * @param parent 上级对象.(NEMicroblog)
		 * @param oauth OAuth链接
		 * 
		 */		
		
		public function NEMAccount(parent:NEMicroblog, oauth:BDOAuthConnection)
		{
			super(parent, oauth);
		}
		
		///
		///	[Register]
		///
		
		/**
		 * 
		 * <p>account/register</p> 
		 * <p>第三方可以通过API注册新用户。</p>
		 * <p>本API只对高级第三方合作者开放，申请此API权限请发邮件到OpenAPI@yeah.net。</p>
		 * 
		 */	
		
		public function register ():void
		{
			
		}

		///
		///	[Activate]
		///
		
		/**
		 * 
		 * <p>account/activate</p>
		 * <p>网易通行证开通微博，当用户有通行证账号且未开通微博时，可以通过此API开通。</p>
		 * 
		 * <p>此API是唯一一个在没有开通微博账号下可以访问的API，但仍需要先有通行证账号，如未登录则返回401；</p>
		 * <p>没有任何参数返回400。</p>
		 *  
		 * @param nick_name 可选参数 : 昵称，如果昵称不合法，则返回400；
		 * @param real_name 可选参数 : 真实姓名，如真实姓名不合法，则返回400；
		 * @param mobile 	可选参数 : 手机号，如手机号不合法，则返回400；
		 * @param id_num 	可选参数 : 身份证号，如身份证号不合法，则返回400；
		 * 
		 */	
		
		public function activate (nick_name:String = null, real_name:String = null, mobile:String = null, id_num:String = null):void
		{
			oauth.addOAuthParameters ("nick_name", nick_name, true);
			oauth.addOAuthParameters ("real_name", real_name, true);
			oauth.addOAuthParameters ("mobile", mobile, true);
			oauth.addOAuthParameters ("id_num", id_num, true);
			
			//
			
			super.connect ("ACTIVATE", "POST");
		}
		
		///
		///	[Update profile]
		///
		
		/**
		 * 
		 * <p>account/update_profile</p>
		 * <p>修改用户个人资料。</p>
		 * <p>本API只对高级第三方合作者开放，申请此API权限请发邮件到OpenAPI@yeah.net，未授权访问则返回403；</p>
		 * <p>没有任何参数返回400。</p>
		 * 
		 * @param nick_name 	可选参数 : 昵称，如果昵称不合法，则返回400；
		 * @param real_name 	可选参数 : 真实姓名，如真实姓名不合法，则返回400；
		 * @param description 	可选参数 : 用户描述，如超过163个字符，则返回400；
		 * @param province 		可选参数 : 用户省份，如省份不合法，则返回400；省市列表请参考 http://open.t.163.com/location.txt
		 * @param city 			可选参数 : 用户城市，如城市不合法，则返回400；province与city参数一起使用才有效。
		 * 
		 */	
		
		public function update_profile (nick_name:String = null, real_name:String = null, description:String = null, province:String = null, city:String = null):void
		{
			oauth.addOAuthParameters ("nick_name", nick_name, true);
			oauth.addOAuthParameters ("real_name", real_name, true);
			oauth.addOAuthParameters ("description", description, true);
			oauth.addOAuthParameters ("province", province, true);
			oauth.addOAuthParameters ("city", city, true);
			
			//
			
			super.connect ("UPDATE_PROFILE", "POST");
		}
		
		///
		///	[Update profile image]
		///
		
		/**
		 * 
		 * <p>account/update_profile_image</p>
		 * <p>修改用户个人头像。</p>
		 * 
		 * <ul>
		 * 	<li>本API只对高级第三方合作者开放，申请此API权限请发邮件到OpenAPI@yeah.net，未授权访问则返回403；</li>
		 * 	<li>如果未使用oauth认证返回401；</li>
		 * 	<li>图片超过大小限制或格式不正确则返回400;</li>
		 * 	<li>oauth相关参数请放在header里，不能放在body里，否则会返回401</li>
		 * </ul>
		 *  
		 * @param imageName 必选参数 : 需要上传的图片的文件名.
		 * @param imageData 必选参数 : 需要上传的图片数据.
		 * 
		 */	
		
		public function update_profile_image (imageName:String, imageData:ByteArray):void
		{
			super.action= "UPDATE_PROFILE_IMAGE";
			
			uploader = new BDHttpLoader ();
			
			//
			
			uploader.method = "POST";
			uploader.addParameters ("pic", imageName, imageData);
			uploader.connect (oauth.getOAuthRequest ("POST", uri (action), null, true));
			
			//
			
			uploader.addEventListener (Event.COMPLETE, connectCompleteHandler);
			uploader.addEventListener (IOErrorEvent.IO_ERROR, connectErrorHandler);
		}
		
		///
		///	[Verify credentials]
		///
		
		/**
		 *
		 * <p>account/verify_credentials</p>
		 * <p>判断当前用户是否验证成功并返回该用户信息。</p> 
		 * 
		 * <ul>
		 * 	<li>如果用户通行证身份验证成功且用户已经开通微博则返回http状态为200；</li>
		 * 	<li>如果不是则返回401的状态和错误信息；</li>
		 * 	<li>此方法用了判断用户身份是否合法且已经开通微博。</li>
		 * </ul>
		 * 
		 */	
		
		public function verify_credentials ():void
		{
			super.connect ("VERIFY_CREDENTIALS");
		}
		
		///
		///	[Reminds message latest]
		///
		
		/**
		 * 
		 * <p>reminds/message/latest</p>
		 * <p>返回当前登录用户未读的新消息数量。</p>
		 * 
		 * <ul>
		 * 	<li>如果用户通行证身份验证成功且用户已经开通微博则返回http状态为200；</li>
		 * 	<li>如果不是则返回401的状态和错误信息。</li>
		 * </ul>
		 * 
		 */	

		public function reminds_message_latest ():void
		{
			super.connect ("REMINDS_MESSAGE_LATEST");
		}
		
		///
		///	[Rate limit status]
		///
		
		/**
		 * 
		 * <p>account/rate_limit_status</p>
		 * <p>返回当前小时内剩余访问次数。</p>
		 * 
		 */	
		
		public function rate_limit_status ():void
		{
			super.connect ("RATE_LIMIT_STATUS");
		}
	}
}